LW2000

 

Nombre:      MP3 Wolf

Versión:       1.04

Editor:         Trellian

Víctima:       MWOLF32.EXE

Herramientas:       W32Dasm

                            SoftICE

                   Cerebro

Cracker:                LW2000

Tutorial:                número 26

URL:                      http://www.trellian.com/mwolf

 

Renuncia: Este tutorial tiene una finalidad únicamente educativa. No asumo ninguna responsabilidad por el mal uso de éste material.

 

1.     Vamos a la pantalla de registro e introducimos los detalles; ‘LW2000’ como Registration name y ‘1230099’ como Serial Number.

2.     ¡Boooom! Obtenemos un mensaje de error que nos indica que nuestro Code no es el correcto. ¿Qué demonios es esto? ¡Parece que hemos encontrado un ‘bug’ ..! ¡Vamos a corregirlo!

3.     Cargamos W32Dasm con ‘MWOLF32.EXE’ y hacemos click en la String Data References. Vamos a nuestra cadena. Bien, deberíamos estar aquí:

 

:00403541 E8DC9D0000    call 0040D322     >Nuestra rutina de

>comprobación

:00403546 59            pop ecx

:00403547 85C0          test eax, eax

:00403549 59            pop ecx

:0040354A 7518          jne 00403564      >Comprobación

:0040354C 6A30          push 00000030

 

* Possible StringData Ref from Data Obj ->"Invalid Registration"

|

:0040354E 68245B4100    push 00415B24

 

* Possible StringData Ref from Data Obj ->

"Invalid Registration Name or Serial "

 

4.     Para ver desde donde se llama a nuestro mensaje de error, nos desplazamos un poco hacia arriva. En ‘CALL 0040D322’ nuestro Serial falso se compara con el correcto. Si son diferentes EAX = 0, en caso contrario EAX = 1.

5.     ¡Hmmm! Bien, salimos de W32Dasm y arrancamos SoftICE. Vamos a la pantalla de registro e introducimos ‘LW2000’ como Registration Name y ‘1230099’ como Serial Number.

6.     Pulsamos Ctrl-D para cambiarnos a SoftICE y escribimos “BPX HMEMCPY”. Pulsamos F5 para volver a nuestra aplicación. Pulsamos el botón ‘Ok’.

7.     ¡Boooom! SoftICE aparecerá. Pulsamos F11 para ir a la instrucción que realizó la llamada. Ahora pulsamos F12 hasta que lleguemos al código del programa.

8.     Escribimos “BC *” y después ponemos un breakpoint en ‘0040D322’. Pulsamos F5 y ¡booom! Ahora estaremos aquí:

 

:0040D322 55            push ebp

:0040D323 8BEC          mov ebp, esp

:0040D325 83EC30        sub esp, 00000030

:0040D328 8B450C        mov eax, dword ptr [ebp+0C]

:0040D32B 53            push ebx

:0040D32C 56            push esi

:0040D32D 57            push edi

:0040D32E 85C0          test eax, eax

:0040D330 0F840F010000 je 0040D445  

:0040D336 8B5D08        mov ebx, dword ptr [ebp+08]

:0040D339 85DB          test ebx, ebx

:0040D33B 0F8404010000 je 0040D445

:0040D341 80384D        cmp byte ptr [eax], 4D  >Primer carácter igual

>a ‘4D’ (‘M’)

:0040D344 0F85FB000000 jne 0040D445

:0040D34A 80780157      cmp byte ptr [eax+01], 57    >Segundo carácter

>igual a ‘57’

>(‘W’)

:0040D34E 0F85F1000000 jne 0040D445

:0040D354 6A13          push 00000013

:0040D356 50            push eax

:0040D357 8D45E4        lea eax, dword ptr [ebp-1C]

:0040D35A 50            push eax

:0040D35B E849A1FFFF    call 004074A9

:0040D360 83C40C        add esp, 0000000C

:0040D363 8D45E4        lea eax, dword ptr [ebp-1C]

:0040D366 6A2D          push 0000002D     >Tercer carácter igual a ‘2D’

>(‘-‘)

:0040D368 50            push eax

:0040D369 E8120D0000    call 0040E080

:0040D36E 8BF0          mov esi, eax

:0040D370 59            pop ecx

:0040D371 85F6          test esi, esi

:0040D373 59            pop ecx

:0040D374 89750C        mov dword ptr [ebp+0C], esi

:0040D377 0F84C8000000 je 0040D445 >¿El tercer carácter es igual a

>‘2D’ (‘-‘)?

:0040D37D 802600        and byte ptr [esi], 00

:0040D380 8D45F8        lea eax, dword ptr [ebp-08]

 

9.     Si esto no se cumple nuestra ‘criaturita’ saltará a ‘0040D445’. Aquí veremos esto:

 

:0040D445 33C0          xor eax, eax      >EAX = 0

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0040D443(U)

|

:0040D447 5F            pop edi

:0040D448 5E            pop esi

:0040D449 5B            pop ebx

:0040D44A C9            leave

:0040D44B C3            ret               >RETorna con EAX = 0

 

10.  Bien, no queremos que la comprobación falle … Vamos a introducir un Serial. Después traceamos el código de nuevo … Después, veremos esto:

 

:0040D41E 68F47A4100    push 00417AF4

:0040D423 8D45D0        lea eax, dword ptr [ebp-30]

:0040D426 6A14          push 00000014

:0040D428 50            push eax

:0040D429 E872040000    call 0040D8A0

:0040D42E 83C410        add esp, 00000010

:0040D431 46            inc esi

:0040D432 8D45D0        lea eax, dword ptr [ebp-30] >”D EAX”

 

11.  Bien, vemos un número pero, ¿qué podemos hacer con él? ¡Hmmm, tomanos la cadena “MW-“ y después la finalizamos con el nuevo número que nos hemos encontrado.

12.  Probamos a registrarnos nuevamente

 

¡Enhorabuena! ¡Ya es un usuario registrado!

 

¡Se acabó! Fácil, ¿no? ¿Algún comentario? Envíeme un email a LW2000@gmx.net. o vaya a http://www.LW2000.cjb.net

 

Gracias a tKC por sus tutoriales. Empecé leyendo su primer tutorial y todavía sigo leyéndolos.

 

Traducción de: MeGaBiTe